<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <script>

        // 1 数据类型
        //    基本数据类型   number / string / boolean / null / undefined
        //    引用数据类型   function  array  object  (伪数组)
        //    区别：基本类型存储的是值（栈内存），引用类型存储的是地址（堆内存）

        //    注意：引用数据类型转布尔值 都是true

        //    数据类型的相互转化
        //        强制转化
        //        隐式转化 （判断语句）   if(a === 0) => if(!a)   if(a === false) => !a   if(a === true) => if(a)

        // 2 数组
        //    数组存储同类型的数据  [1,2,3]   ['a' ,'b']   [{},{}]    [function(){} , function(){}]
        //    数组的有序性及特点（实际上数组的长度是无限的，length只是标识已声明的有效长度）
        //    变量存储的是地址而不是值  [] !=== false
        //    每次创建引用数据类型的时候，都会创建独一无二的地址   [1] !== [1]      [] !== []
        //    常用方法
        //        pop()后面删除,返回被删除的数  
        //        push()后面添加,返回新的数组的长度 
        //        shift()前面删除,返回被删除的数     
        //        unshift()前面添加,返回新的数组的长度 
        //        concat()  拼接，返回新的数组
        //        includes()   indexOf()   
        //        join(str)   数组按照指定的格式(str=',')转字符串
        //        slice(1,3)  截取数组中的值（包含前面，不包含后面）,第二个参数可以是负数(倒着数)
        //        splice(i , howmany , item , item)  删除，插入，替换
        //        reverse()  数组反向
        //        迭代方法
        //            sort()
        //            forEach()   没有返回值   单纯的遍历
        //            map()     改变数组中的值
        //            filter()  过滤数据，找到满足条件的数据
        //            some()    判断是否有满足条件的数据
        //            every()   是否每一条数据都满足条件
        //            reduce()  归并方法
        

      

        var arr = [1,2,3] ;
        var arr2 = [1,2,3] ;
        console.log(arr === arr2);   // false   地址不一样

        console.log([] === []);  // false

        console.log(Boolean([]));  // true



        // 如何判断空数组

        // var arr = [] ;


        // if(arr.length) {
        //     console.log('有值');
        // } else {
        //     console.log('空值');
        // }


        // if(!str) {为空}


        var arr = [
            function (){console.log(1);} ,
            function (){console.log(2);} ,
        ]

        // arr[0]();

        // var res = arr[1] ;

        console.log(arr[9]);    // undefined


        var arr = [1,2,,] ;
        // arr[0]    // 1
        // arr[1]    // 2
        // arr[2]    // undefined
        // arr[100]  

        arr[100] = 100 ;   // 101

        console.log(arr);

        //有效长度是length = 4
        //实际上数组的长度是无限的  arr[10000]  undefined


        var arr = [1,2,3,11] ;
        var res = arr.unshift('a') ;
        console.log(res);

        var arr = ['a' , 'b' , 'c' , 'd'] ;
        // console.log(arr.join(''));

        console.log(arr.slice(0 , -1));   // ['b' , 'c']


        
        

    </script>
    
</body>
</html>